package br.com.pfc.application.controller.locais;

import br.com.pfc.application.controller.BaseController;
import br.com.pfc.application.dao.LocalDAO;
import br.com.pfc.model.Local;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.apache.commons.lang.StringUtils;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

/**
 *
 * @author mucceli
 */
@Scope(ScopeType.CONVERSATION)
@Name("localPesquisarAction")
public class LocalPesquisarController extends BaseController {

    @In
    private LocalDAO localDAO;
    private String paramNome;
    private String paramCidade;
    private String paramBairro;
    private DataModel listaLocais;

    public DataModel getListaLocais() {
        if (StringUtils.isNotEmpty(paramNome)) {
            if (paramNome.equals("") && paramCidade.equals("") && paramBairro.equals("")) {
                return listaLocais = new ListDataModel(localDAO.pesquisar());
            }

            if (paramCidade != null) {
                return listaLocais = new ListDataModel(localDAO.pesquisaPorCidade(paramCidade));
            } else if (paramBairro != null) {
                return listaLocais = new ListDataModel(localDAO.pesquisaPorBairro(paramBairro));
            } else {
                return listaLocais = new ListDataModel(localDAO.pesquisaPorNome(paramNome));
            }

        } else {
            return listaLocais = new ListDataModel(localDAO.pesquisar());
        }
    }

    public void setListaLocais(DataModel listaLocais) {
        this.listaLocais = listaLocais;
    }

    public DataModel pesquisaPorNome() {
        List<Local> resultadoPesquisa;
        if (StringUtils.isNotEmpty(paramNome)) {

            resultadoPesquisa = localDAO.pesquisaPorNome(paramNome);

            if (resultadoPesquisa.size() == 0) {
                adicionarMensagemInformacao("Não foram encontrados resultados.");
            } else {
                adicionarMensagemInformacao("Foram encontrados " + resultadoPesquisa.size() + " atendimentos.");
            }
            listaLocais = new ListDataModel(resultadoPesquisa);
        } else {
            resultadoPesquisa = localDAO.pesquisar();

            if (resultadoPesquisa.size() == 0) {
                adicionarMensagemInformacao("Não foram encontrados resultados.");
            } else {
                adicionarMensagemInformacao("Foram encontrados " + resultadoPesquisa.size() + " atendimentos.");
            }
            listaLocais = new ListDataModel(resultadoPesquisa);
        }
        return listaLocais;
    }

    public String getParamNome() {
        return paramNome;
    }

    public void setParamNome(String paramNome) {
        this.paramNome = paramNome;
    }

    public String getParamBairro() {
        return paramBairro;
    }

    public void setParamBairro(String paramBairro) {
        this.paramBairro = paramBairro;
    }

    public String getParamCidade() {
        return paramCidade;
    }

    public void setParamCidade(String paramCidade) {
        this.paramCidade = paramCidade;
    }
}
